home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 2.iso
/
nt
/
go3d16.zip
/
GO3D.TXT
< prev
Wrap
Text File
|
1995-07-18
|
12KB
|
291 lines
G O 3 D by Zap
==============
v 1.6
zap@lysator.liu.se
950718
Included files:
===============
GO3D.EXE - The executable. Launch again to disable.
3DFTASK.DLL - The DLL. This is where all the magic goes!
CTL3D32.DLL - The Microsoft 3D dialog box DLL. *IT MUST BE IN
WINDOWS/SYSTEM32!* If you already have it (or a
newer version of it) there, DELETE it from the
GO3D directory!!
GO3D.INI - A Sample .INI file.
INTRO
=====
We are all waiting for Windows 95. But '95 is running out. And more and more
nifty stuff keeps getting dropped from Win 95.
While waiting, we are running Windows NT. NT is a very nice roboust operating-
system. We like it.
But....
....it *LOOKS* like a piece of shit!
The '95-ers have nifty 3D-look windows and dialogs.
We NT-ers still have the old, boring flat ugly windows and dialogboxes.
Did I say "have"? I mean "had". THIS IS WHERE GO3D COMES IN!
============================
GO3D does the following:
------------------------
1. Attaches a 3D frame to all windows
(Exceptions: The console window can't get a 3D frame, sadly! (It is not
possible to subclass the window process of a console window!) Also, any
window that draws the frame itself (doesn't set the WS_THICKFRAME style)
isn't touched.)
2. Adds CTL3D controls to ALL DIALOG BOXES IN THE SYSTEM!
3. Windows and Dialogs can be excluded from this process by defining
excludes in the GO3D.INI file.
4. Set the size of new windows which has the "let windows decide the
size" flag set.
GO3D.EXE and 3DFTASK.DLL should be in the same directory. CTL3D32.DLL MUST
BE IN THE WINDOWS/SYSTEM32 DIRECTORY!!!! (Microsoft requirement).
The GO3D.INI file must also be in the Windows directory!!!
Incompatible apps and GO3D.INI:
===============================
NOTE: GO3D.INI is loaded into memory when GO3D is launched. THAT MEANS
THAT CHANGES IN GO3D.INI DOES NOT TAKE AFFECT UNTIL YOU START GO3D.EXE
AGAIN. That means that you must first launch GO3D.EXE once to uninstall
the currently running GO3D.EXE, and then a second time to start a new
GO3D process.
Some applications are not "compatible" with GO3D. Either they are not
compatible from a visual point of view, i.e. the 3D frame looks like shit
on these applications, (Microsoft Encarta is a nice example, it draws its
own borders, and Go3D borders on top of Encarta borders looks....blearch.)
or they are not "technically" compatible, i.e. the applications crash,
die, explode and melt. [Please note, that what GO3D really DOES (swapping
the window procedure under the very nose of the application that really
owns the window) is "by definition" a DIRTY TRICK. Therefore, it is not
really strange if some aplications, especially those trying tricks of their
own, crashes.]
To remedy this situation, we have the GO3D.INI file. This file should be in
your WINDOWS directory, and can look as follows:
[Go3D]
LogFile=C:\go3d.log
Exclude1=1,,ENCART95.EXE
Exclude2=3,MSVCOutputWindow,MSVC.EXE
[NewWindowSize]
X=700
Y=700
The GO3D Section:
-----------------
The "[Go3D]" section is used to EXCLUDE certain windows and/or dialogs from
the 3D-painting process. This is done by writing an "Exclude..." line in
the GO3D.INI file. The format of an "Exclude" line is:
Exclude<exclude number>=<flags>,<windowclass>,<exefile>
In this string, 'exclude number' is just a number. (You may have a maximum
of 25 excludes). <flags> can be 1 to exclude the window border, 2 to exclude
the addition of CTL3D32.DLL to the dialogs, and 3 to exclude both.
<windowclass> can be the class name of a window to exclude, and <exefile>
is the name of the executable owning the window.
You can see in the sample the following line:
Exclude1=1,,ENCART95.EXE
This means, that window frames in the application ENCART95.EXE will NOT get
any 3D-look. Note that since flags=1, this only excludes normal windows,
not dialogs.
Note however that in this case the 'windowclass' isn't specified. That means
that all windows of that executable is affected. If BOTH 'windowclass' AND
'exefile' would be specified, both would also have to match before the
window/dialog was excluded from the 3D-beautification-process.
So, let's say that you just want to exclude the 3D-look from ONE window in
some application. Then you must know the CLASS NAME of that window. Normally,
'class names' are internal, and only known to the programmer of the app.
Sure, you could use things like Microsoft Spy++ to find it. But fear not,
GO3D can tell you this too.
By adding a setting for "Logfile" in the GO3D.INI (in the example above, it
is set to C:\go3d.log), you will get a file showing all new windows added
to the GO3D beautification process. The file will look something like this:
Loaded exclude 1, Type 1, class '' exe 'ENCART95.EXE'
Loaded exclude 2, Type 3, class 'MSVCOutputWindow' exe 'MSVC.EXE'
Window: Class='MSVCMainWindow' EXE='msvc.exe'
Window: Class='WINSERVER' EXE='WINSERVE.EXE'
Window: Class='MSVCOutputWindow' EXE='msvc.exe' - [Match:Exclude2]
Window: Class='MSVCChildWindow' EXE='msvc.exe'
Window: Class='MSVCChildWindow' EXE='msvc.exe'
Window: Class='MSVCChildWindow' EXE='msvc.exe'
Dialog: Class='#32770' EXE='GO3D.EXE'
Window: Class='GO3D' EXE='GO3D.EXE'
This is what you see when launching GO3D.EXE with Microsoft Visual C++
(MSVC.EXE) running. Here you see all new windows. In our sample, we have
excluded the "MSVCOutputWindow" from the joy of getting the 3D-look.
This also appears in the logfile.
If you have a problematic application, then first set "Logfile" in your
GO3D.INI file. (Remember to turn GO3D.EXE off and on again to re-load GO3D.INI
file!!). Then run the offending application, and watch it crash/be ugly.
Then look in your log-file, and see what the application name (and optionally
class name) of the offending window(s) are. Add this to an Exclude in the
file, yet again re-start GO3D, and try again! If it works, don't forget to
remove the 'Logfile' setting, or you will have a rapidly growing file on
your system!!
If you want, you could make an exclude like:
Exclude1=1,,
This would remove the 3D-border from ALL windows, but still add CTL3D32.DLL-
look to all dialogs. Conversly, writing:
Exclude1=2,,
...would do the opposite: No CTL3D32.DLL-look would be used, but there WOULD
be 3D-frames on other windows. If you want to be silly, you could write:
Exclude1=3,,
This is the same as not running GO3D at all, so why would you want to do
that!? :-)
The NEWWINDOWSIZE Section:
--------------------------
Then we can optionally have the "[NewWindowSize]" section. As you know, most
Windows apps start up on a "random" position on the screen. The positioning
isn't so bad, but their default SIZE is always "extending to the right edge
and top of the icon area". When you are starting to work with big screens,
this is a pain in the neck. When I want my tiny little notepad window, and
notepad pops up in the upper left corner of my 1280x1024 screen, I get a
HUGE notepad, where I wanted a small one. What the settings in this section
does, is to alter any default widths and heights to have a MAX value of the
given value. So if you never want windows to pop up wider than, say, 700
pixels, set X=700, as in the sample above. If you want to leave the size
of new windows unrestricted, you can completely remove the "[NewWindowSize]"
section, or just the "X" or "Y" settings if you want. If you are using any
other of the numerous "window sizing app's", remove the section completely.
Known "Problems" you should know about:
=======================================
Shutting down GO3D with the process viewer or similar means INSTANT DEATH to
ALL WINDOWS TO WHICH GO3D HAS ATTACHED ITSELF! (Because their window
procedure, which is in the DLL, suddenly no longer exists!)
To disable GO3D cleanly, you must LAUNCH IT AGAIN!
Since I didn't write the CTL3D32.DLL, I couldn't make it as nifty and self-
uninstalling as GO3D is. MEANING: IF you have a DIALOG visible on screen
onto which GO3D has attached the CTL3D window handler, and you shut down GO3D,
this means that the program with the dialog will crash instantly. (Same
reason, it's window procedure is destroyed!)
Tips:
=====
To make GO3D shine in all it's glory, you should probably increase the
border widht of your windows. 5 or 6 is a nice number. If you really want
stuff to look 3D, try 8!
Also, change the COLORS of the screen elements "Active Title Bar", "Active
Border" and "Inactive Border" to medium gray. Change the color of "Inactive
Title Bar" to some dark color of your choice. That looks Very Kewl....
And above all: HAVE FUN! ENJOY!
LEGAL STUFF:
============
GO3D is Joyware. If you like it, let me know! Gruesome legal penalties
forthcoming for anyone that enjoys the product without informing me! :-)
GO3D is created by Zap. As such, I own the program. However, I give anybody
in the world unrestricted right to use it, free. (Yes, FREE. Not even a $0.02
registration fee!). Anybody is also allowed to distribute it, as long as the
following files are kept together: GO3D.EXE, GO3D.TXT (this file), and the
3DFTASK.DLL file. You MAY NOT charge money for the program itself, but you
MAY charge a reasonable amount of money for the distribution media. You MAY
include this on CD-ROM collections, Sharware disk libraries e.t.c.
BUT: I also hold no responsibility whatsoever for damage caused by this
program. I have warned you that it kills your entire Windows session if you
shut it down incorrectly. That means that all programs, no matter how
important the document loaded into them are, will die. Horribly. Screaming.
You use the program at your own risk, but also at your own pleasure.
IF, however, the pleasure of using this program becomes too great, please
relieve it by sending a happy email, snailmail, or fax, to one of the
following adresses:
Email: zap@lysator.liu.se
Smail: Hakan "Zap" Andersson
St Almby, Hagby
S-635 05 Eskilstuna
SWEDEN
Fax: +46 16 96014
Over & Out!
/Z
==============================================================================
Version history:
v 0.9: Internal release to friends.
v 1.0: First public release. Uploaded to CICA.
Now uses "SetProp/GetProp" to store original window procedure instead
of static data tree. Faster! Cleaner!
Applies to dialogs too. (Using CTL3D32.DLL)
v 1.5: Updated version.
Now listens to the GO3D.INI file. Can define new-window width.
Can avoid adding the 3D-look to apps/windows/dialogs based on
appname, classname, or both.
v 1.6: Updated version.
Fixes the white-rectangle-problem (seen in e.g. file manager) by
converting all "Static" dialog controls of type SS_SIMPLE to the
type SS_LEFTNOWORDWRAP. SS_SIMPLE for some silly reason doesn't
listen to the background color!?